package com.itheima.behavior.service;

import com.itheima.model.behavior.dtos.RecommendQueryDto;
import com.itheima.model.common.dtos.ResponseResult;

/**
 * 推荐服务接口
 */
public interface RecommendService {

    /**
     * 获取个性化推荐
     * 基于用户画像的内容推荐
     * 
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getPersonalizedRecommend(Integer limit);

    /**
     * 获取协同过滤推荐
     * 基于相似用户的协同过滤推荐
     * 
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getCollaborativeRecommend(Integer limit);

    /**
     * 获取热门推荐
     * 基于热度排行榜的推荐
     * 
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getPopularRecommend(Integer limit);

    /**
     * 获取分类推荐
     * 基于指定分类的推荐
     * 
     * @param categoryId 分类ID
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getCategoryRecommend(Integer categoryId, Integer limit);

    /**
     * 获取相似图书推荐
     * 基于图书内容的相似推荐
     * 
     * @param bookId 图书ID
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getSimilarBooksRecommend(Integer bookId, Integer limit);

    /**
     * 混合推荐（猜你喜欢）
     * 综合多种推荐算法的混合推荐
     * 
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getHybridRecommend(Integer limit);

    /**
     * 获取新书推荐
     * 推荐最近上架的图书
     * 
     * @param limit 推荐数量
     * @return 推荐列表
     */
    ResponseResult getNewBooksRecommend(Integer limit);

    /**
     * 通用推荐接口
     * 根据查询参数获取推荐
     * 
     * @param dto 推荐查询参数
     * @return 推荐列表
     */
    ResponseResult getRecommend(RecommendQueryDto dto);
}

